﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using DBUtils;

/// <summary>
/// 该页面对应着功能说明书的部门当日考勤页。
/// </summary>
public partial class Attendance_DailyReport : System.Web.UI.Page
{

    DataSet dsResult;
    DataSet dsDept;
    int iDeptID;
    
    /// <summary>
    /// 网页初始化时执行该方法。判断用户权限，并据此调用 SearchResult 方法显示该部门当日考勤信息。
    /// 该过程调用 Employee.GetEmployeeInfo(iEmpID, emp) 函数，从数据库中获取员工的其他信息。
    /// 该过程调用 Employee.GetCEOInfo(iCEOID) 函数，从数据库中获取总经理的员工编号。
    /// 该过程调用 CheckLvReq.GetDeptList(dsDept) 函数，从数据库中获取所有部门的列表。
    /// 该过程调用 SearchResult() 函数，显示该部门的当日考勤信息。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            int ok = CheckLvReq.GetDeptList(ref dsDept);
            cmbDeptList.DataSource = dsDept.Tables[0];
            cmbDeptList.DataTextField = dsDept.Tables[0].Columns[1].ToString();
            cmbDeptList.DataValueField = dsDept.Tables[0].Columns[0].ToString();
            cmbDeptList.DataBind();

            int ceo = 0;
            if (Employee.GetCEOInfo(ref ceo) == 1) //判断当前用户是否是CEO
            {
                if (ceo == Convert.ToInt32(Session["EmployeeID"]))//如果当前登陆的是CEO
                {
                    Panel1.Visible = true;
                }
                else
                {
                    Panel1.Visible = false;
                    Employee emp = new Employee();
                    ok = Employee.GetEmployeeInfo(ceo, emp);
                    cmbDeptList.SelectedValue = emp.DeptID.ToString();
                    iDeptID = Convert.ToInt32(cmbDeptList.SelectedValue);
                    btnSearch_Click(sender, e);
                }
            }
        }

        lblToday.Text = DateTime.Today.Date.ToString();
    }

    /// <summary>
    /// 当用户单击“确定”按钮时，执行该方法，显示该部门当日考勤信息。
    /// 该过程调用 SearchResult() 函数，显示部门当日的考勤信息。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSearch_Click(object sender, EventArgs e)
    {
        SearchResult();
    }

    /// <summary>
    /// 当用户选中其他部门时，该方法更新选中部门信息。
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void cmbDeptList_SelectedIndexChanged(object sender, EventArgs e)
    {
        iDeptID = Convert.ToInt32(cmbDeptList.SelectedValue);
    }


    /// <summary>
    /// 该方法用 DataGrid 显示部门当日的考勤信息，如果没有记录则显示相应的提示信息。
    /// 该过程调用 Attendance.QueryDailyAttend(iDeptID, strStartTime, strEndTime, dsResult) 函数，
    /// 检索数据库中该部门当日考勤不合格的所有员工列表。
    /// </summary>
    public void SearchResult()
    {
        iDeptID = Convert.ToInt32(cmbDeptList.SelectedValue);
        if (Attendance.QueryDailyAttend(iDeptID, DateTime.Today.ToString(), DateTime.Today.ToString(),ref dsResult) == 1)
        {
            if (dsResult.Tables[0].Rows.Count == 0)
            {
                Label2.Visible = true;
            }
            else
            {
                GridView1.DataSource = dsResult.Tables[0];
                GridView1.DataBind();
                GridView1.Visible = true;
                Panel1.Visible = true;
            }
        }
    }
}
